package com.dc.common.em;

/**
 * 菜单权限枚举类
 *
 * @author Shen
 * @date 2018年4月9日 上午10:36:16
 */
public enum EnumOperationModule {

	// 默认的权限
	DEFAULT(0,"", ""),

	No11101(11101, "部门管理", "查询,查全,增加,修改,删除"),
	No11102(11102, "角色管理", "查询,查全,增加,修改,删除"),
	No11103(11103, "用户管理", "查询,查全,增加,修改,删除"),
	No11104(11104, "操作日志", "查询,查全"),
	No11105(11105, "登录日志", "查询,查全"),
	No11106(11106, "系统参数", "查询,查全,修改"),
	No11107(11107, "数据字典", "查询,查全,增加,修改,删除"),
	No11108(11108, "监控点管理", "查询,查全,增加,修改,删除"),
	No11109(11109, "摄像机管理", "查询,查全,增加,修改,删除"),
	No11110(11110, "定位标签管理", "查询,查全,增加,修改,删除"),
	No11111(11111, "班次管理", "查询,查全,新增,修改"),
	NO11112(11112,"深加工管理","查询,查全,增加,修改,删除"),

	No14102(14102, "设备管理", "查询,查全,增加,修改,删除"),
	NO14101(14101,	"计划管理","查询,查全,增加,修改,删除"),


	No14201(14201,"深加工日报","查询,查全,导出,增加,修改,删除"),
	No14202(14202,"深加工月报","查询,查全,导出,增加,修改,删除"),
	NO14203(14203,"订单生产管理","查询,查全,增加,修改,删除"),


	No11201(11201, "球磨机管理", "查询,查全,增加,修改,删除"),
	No11202(11202, "电子秤管理", "查询,查全,增加,修改,删除"),
	No12101(12101, "仓库管理", "查询,查全,增加,修改,删除，导出"),
	No12102(12102, "物品管理", "查询,查全,增加,修改,删除"),

	No13101(13101, "配方管理", "查询,查全,查私,增加,修改,删除"),
	No13102(13102, "配料管理", "查询,查全,查私,增加,修改,删除"),
	No13103(13103, "生产报表", "查询,查全,导出"),
	No13104(13104,"球磨、配方生产数据表","查询,查全"),
	No13105(13105,"铲车配料数据表","查询,查全"),
	No1310(13106,"铲车违章记录表","查询,查全"),
	No13201(13201, "铲车管理", "查询,查全,查私,增加,修改,删除"),



	No40101(40101, "摄像机监控", "查询,查全"),
	No40102(40102, "电子秤监控", "查询,查全"),
	No40103(40103, "铲车定位监控", "查询,查全"),
    No40104(40104,"摄像机监控","查询,查全"),
    NO40105(40105,"加工设备监控","查询,查全"),
	No40106(40106, "摄像机监控管理", "查询,查全,增加,修改,删除"),
	No50201(50201,"深加工历史数据","查询,查全,导出"),
	No50101(50101, "喂料报表", "查询,查全,导出"),
    NO60101(60101,"综合分析报表", "查询,查全"),

    NO60102(60102,"图表曲线", "查询,查全")
	;

	int code;// 一级菜单编号code
	String module;// 一级菜单名
	String operation;// 权限功能

	/**
	 * 测试
	 *
	 * @Title: main
	 * @param
	 *
	 * @author: ShenHJ Date: 2018年4月9日 上午10:37:16
	 */
	// public static void main(String[] args) {
	// List<SystemRolePermission> list2 = new ArrayList<SystemRolePermission>();
	// SystemRolePermission sysRole_Permission = new SystemRolePermission();
	// sysRole_Permission.setFirst_code("1");
	// sysRole_Permission.setSecond_code("101");
	// SystemRolePermission sysRole_Permission1 = new SystemRolePermission();
	// sysRole_Permission1.setFirst_code("1");
	// sysRole_Permission1.setSecond_code("102");
	// SystemRolePermission sysRole_Permission2 = new SystemRolePermission();
	// sysRole_Permission2.setFirst_code("2");
	// sysRole_Permission2.setSecond_code("201");
	// list2.add(sysRole_Permission);
	// list2.add(sysRole_Permission1);
	// list2.add(sysRole_Permission2);
	// System.out.println(EnumOperationModule.getAllMenu(list2));
	// }

	private EnumOperationModule(int code, String module, String operation) {
		this.code = code;
		this.module = module;
		this.operation = operation;
	}

	/**
	 * 根据菜单编号获取菜单模块名，如：根据101获取到单位管理
	 *
	 * @Title: getModuleByCode
	 * @param code
	 * @return: String
	 * @author: ShenHJ Date: 2018年4月9日 上午10:37:35
	 */
	public static String getModuleByCode(int code) {
		for (EnumOperationModule em : EnumOperationModule.values()) {
			if (em.getCode() == code) {
				return em.getModule();
			}
		}
		return null;
	}

	/**
	 * 根据栏目编号获取操作（中文），如101获取到 新增,删除,修改,查看
	 *
	 * @Title: getOperationByCode
	 * @param code
	 * @return: String
	 * @author: ShenHJ Date: 2018年5月1日 下午9:26:41
	 */
	public static String getOperationByCode(int code) {
		for (EnumOperationModule em : EnumOperationModule.values()) {
			if (em.getCode() == code) {
				return em.getOperation();
			}
		}
		return null;
	}

	/**
	 * 根据二级菜单code值以及类型（例如：新增），获取类型（例如新增）的下标
	 *
	 * @Title: getNumByCodeType
	 * @param code
	 * @param type
	 * @return: int
	 * @author: ShenHJ Date: 2018年4月9日 上午10:46:21
	 */
	public static int getNumByCodeType(int code, String type) {// 根据101获取新增属于第0个
		for (EnumOperationModule em : EnumOperationModule.values()) {
			if (em.getCode() == code) {
				String[] funs = em.getOperation().split(",");
				for (int i = 0; i < funs.length; i++) {
					if (type.equals(funs[i])) {
						return i;
					}
				}
			}
		}
		return -1;
	}

	/**
	 * 根据权限值获取需要隐藏的按钮id
	 *
	 * @Title: getHiddenIds
	 * @param permissionVal
	 * @return: String
	 * @author: ShenHJ Date: 2018年4月23日 下午4:33:36
	 */
	// public static String getHiddenIds(int code, String permissionVal) {
	// char[] c = permissionVal.toCharArray();
	// String str = getOperationByCode(second_code);
	// String[] strs = str.split(",");
	// StringBuffer stringBuffer = new StringBuffer();
	// for (int i = 0; i < c.length; i++) {
	// if ("0".equals(c[i] + "")) {
	// if (stringBuffer.length() == 0) {
	// stringBuffer.append(strs[i]);
	// } else {
	// stringBuffer.append("," + strs[i]);
	// }
	// }
	// }
	// return stringBuffer.toString();
	// }

	/**
	 * 根据查出的权限获取所有一级菜单以及二级菜单
	 *
	 * @Title: getAllMenu
	 * @param
	 *
	 * @return: List 保证传入的已经去重（防止一个人对应多个角色而导致菜单重复）
	 * @author: ShenHJ Date: 2018年4月9日 上午11:40:18
	 */
	// public static List getAllMenu(List<SystemRolePermission> permissions) {
	// TreeSet<String> set = new TreeSet<String>();
	// for (int i = 0; i < permissions.size(); i++) {
	// set.add(permissions.get(i).getFirst_code());
	// }
	// List list = new ArrayList<Map<String, Object>>();
	// for (String firstcode : set) {
	// Map map = new HashMap<String, Object>();
	// map.put("firstCode", firstcode);
	// map.put("firstName", getfirstModuleByCode(Integer.valueOf(firstcode)));
	// List subList = new ArrayList<Map<String, Object>>();
	// for (int j = 0; j < permissions.size(); j++) {
	// if (permissions.get(j).getFirst_code().equals(firstcode)) {
	// Map subMap = new HashMap<String, Object>();
	// subMap.put("secondCode", permissions.get(j).getSecond_code());
	// subMap.put("secondName",
	// getSecondModuleByCode(Integer.valueOf(permissions.get(j).getSecond_code())));
	// subList.add(subMap);
	// }
	// }
	// map.put("secondModule", subList);
	// list.add(map);
	// }
	// return list;
	// }

	public int getCode() {
		return code;
	}

	public void setCode(int code) {
		this.code = code;
	}

	public String getModule() {
		return module;
	}

	public void setModule(String module) {
		this.module = module;
	}

	public String getOperation() {
		return operation;
	}

	public void setOperation(String operation) {
		this.operation = operation;
	}

}
